package com.lanchetech.user.service;


import com.lanchetech.bean.request.PageReq;
import com.lanchetech.bean.response.BasePageResp;
import com.lanchetech.bean.response.BaseResp;
import com.lanchetech.bean.response.InvoiceApplyResp;
import com.lanchetech.bean.response.ResultData;
import com.lanchetech.bean.vo.InvoiceApplyVO;
import com.lanchetech.bean.vo.InvoiceCountVO;
import com.lanchetech.entity.InvoiceAccount;
import com.lanchetech.entity.InvoiceApply;
import com.lanchetech.entity.User;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

public interface InvoiceService {

    BaseResp editInvoiceApply(User user, InvoiceApply invoiceApply);

    BaseResp deleteInvoiceAccount(User user, Long id);

    BaseResp editInvoiceAccount(User user, InvoiceAccount invoiceAccount);

    ResultData<List<InvoiceAccount>> getInvoiceAccountList(User user);

    ResultData<InvoiceAccount> getInvoiceAccountDetail(User user, Long id);

    ResultData<InvoiceApplyResp> getInvoiceApplyDetail(User user, Long orderId, Byte type);

    ResultData<BasePageResp<InvoiceApplyVO>> getInvoiceApplyPage(PageReq req);

    ResultData<InvoiceCountVO> countInvoice(User user);

}